spring security [Spring&AWS][5-2] 구글 로그인 연동하기 ✅ User 클래스 User 클래스는 사용자 정보를 담당할 도메인이다. domain/user/User.java ✅ Role domain/user/Role.java domain/user/Repository.java 소셜 로그인 등 클라이언트 입장에서 소셜 기능 구현 시 필요한 의존성 OAuth 라이브러리를 이용한 소셜 로그인 설정 코드를 작성해보자. OAuth2 로그인 기능에 대한 여러 설정의... Springspring securityTILOAuth2.0OAuth2.0 [Spring] Spring Security + JWT 로그인 구현 해보기 - 1 (설정, 도메인 생성, 레포 생성) 나는 MySQL 말고 PostgreSQL 사용했다. 다운을 받고 build.gradle을 사용하여 project를 열고 Jackson의 WRITE_DATES_AS_TIMESTAMPS속성은 Java 8 데이터/시간 값을 타임스탬프로 직렬화하는 것을 비활성화하는 데 사용됩니다. 모든 날짜/시간 값은 ISO 날짜/시간 문자열로 직렬화됩니다. 도메인 모델에서 Java 8 데이터/시간 클래스를 사용할... JWTspring securityJWT [Spring Boot] OAuth2 + JWT + React 적용해보리기 오늘 팀원이랑 이야기를 해보다가 우려했던 일이 벌어졌다.. 우려했던 일이란? Jwt 관련 내용은 다음 글에 있습니다. 정보가 너무 많거나 구멍 나있는 부분이 너무나 많았다. 대표적으로 사용되는 서비스로는 Kakao, Google, Facebook, Naver 등이 있다. 대표적으로 3가지 방식이 있다. 프론트 + 백엔드 혼합으로 인증 과정을 수행 React에서는 Next-Auth라는 라이브러... Spring bootJWTspring securityoauth2JWT <Spring Security> Spring Security 주요 아키텍처 이해(1) 스프링 시큐리티는 모든 요청에 대한 인증 및 인가와 같은 보안 처리를 필터 기반으로 처리하고 있는데, 필터에서도 스프링의 기술(스프링 빈)을 사용하고 싶은 요구사항이 있다. 하지만, 서블릿 필터와 스프링 빈 간에 호출하고 사용해야 하는 경우가 생기는 데, 이 때 서블릿 필터는 DelegatingFilterProxy 클래스를 사용해서 스프링 빈에게 요청을 위임하고 그 결과 스프링 빈에서 구현한... DelegatingFilterProxyFilterChainProxySpringspring securitySecurityContextSpring bootauthenticationDelegatingFilterProxy [Spring] Spring Security + JWT 로그인 구현해보기 - 3 (회원가입, 로그인 api 작성) 이제 필요한 모든 보안 구성이 완료되었습니다. 드디어 로그인 및 가입 API를 작성할 시간입니다. 그러나 API를 정의하기 전에 API가 사용할 요청 및 응답 페이로드(DTO)를 정의해야 합니다. 먼저 이러한 페이로드를 정의해보겠습니다. payload혹은 dto 패키지를 생성해주세요 ~ 그안에 작성하겠습니다. 1. 로그인 요청 (Request) 2. 회원 가입 요청 (Request) 응답 R... JWTspring securityJWT <Spring Security> DB 연동 인증 처리 build.gradle는 다음과 같다. Spring Security 5.0 이전에는 기본 PasswordEncoder가 평문을 지원하는 NoOpPasswordEncoder(현재는 Deprecated 됨) 였다. 여러 개의 PasswordEncoder 유형을 선언한 뒤, 상황에 맞게 선택해서 사용할 수 있도록 지원하는 Encoder이다. 암호화 포맷: {id}encodedPassword 기본 ... AuthenticationProviderAccountContextUserDetailsServicespring securityAccountContext 회원 도메인 개발과 JWT 인증/인가 처리 이번 캡스톤디자인 프로젝트에서 만들게 될 플랫폼 서비스는 기본적으로 회원 도메인이 들어가는 서비스이기에 이에 대한 인증/인가 처리를 유연하게 할 수 있도록 Spring Security를 활용하고자 하였다. 또한 Frontend와 Backend가 분리된 구조로 팀 프로젝트를 진행하기 때문에, 다양한 방법 중 JWT Token 인증/인가 방식으로 회원가입/로그인 로직을 구현하였다. Email(I... 캡스톤디자인JWTspring securityJWT Spring Security - 정수원 4일차 요청 시 전달되는 토큰 값과 서버에 저장되는 실제 값과 비교한 후 만약 일치하지 않으면 요청은 실패한다. http.csrf() : 기본 활성화 되어있음 http.csrf().dsabled() : 비활성화 특정한 이름을 가진 스프링 빈을 찾아 그 빈에게 요청을 위임 springSecurityFilterChain 이름으로 생성된 빈을 ApplicationContext에서 찾아 요청을 위임 Del... spring securityspring security Simple BBS 애플리케이션 배포 #4 지난번 SimpleTodoList 애플리케이션을 진행하면서 적용했던 스프링 시큐리티를 이번에는 MVC 기반 애플리케이션인 SimpleBBS에도 적용하는 것이 주 목적이었는데 확실히 까다로운 부분이 많았지만 결과적으로 잘 적용할 수 있었다. 그리고 인증, 인가도 JWT와 이에 저장된 사용자 정보를 이용했기 때문에 스프링 시큐리티의 로그인, 로그아웃 기능을 별로 활용할 수 없었는데 이번 Simp... Spring Frameworkspring securitySpring Framework Spring Security - 정수원 3일차 8. 인증 API - AnonymousAuthenticationFilter 익명사용자 인증 처리 필터 9. 인증 API - 동시 세션 제어 / 세션고정보호 / 세션 정책 이전 사용자 세션을 만료 하는 경우 현재 사용자 인증을 실패하게 하는 경우 인증 API - SessionManagementFilter, ConcurrentSessionFilter SessionManagementFilter 먼... spring securityspring security [Spring Security] Spring Boot를 이용한 customize Form control Names 이번에는 Form Authentication을 customize 하는 방법에 대해 알아본다. 이전에 작성한 기본 Form Authentication은 여기에서 확인 할 수 있다. Form Authentication의 defualt parameter를 customize 해본다. Spring Security의 form authentication의 기본 파라미터는 다음과 같다. • /login •... spring securityspring security Spring Framework-17 🗄 이번엔 인메모리 방식이 아닌 DB에서 유저를 가져와 인증해봅시다! Spring Security에서는 UserDetailService를 이용하여 유저를 조회합니다. 우리는 이를 구현하는 클래스를 만듭니다. 우리의 username은 email이므로 userMapper가 파라미터로 들어온 email로 유저를 조회하여 반환할 수 있도록 만듭니다. UserDetailService가 반환하는 클래스... spring securitySpring FrameworkSpring Framework [TIL][Spring] spring-security 기존 로그인/로그아웃 재커스터마이징하기 😂 기존에 있던 ajax 방식의 로그인을 살려서 해보려고 했는데,,,, 아무래도 시간이 좀 걸릴 것 같아 그냥 security 방식에 따르기로 했다........8ㅁ8 일단 스프링 시큐리티를 접목해서 구현하는데에 의의가 있으니, 작은 것에 연연하지 않기로...! 참고 : 에러 발생 기존에 있던 main 코드 로그인을 하면 link는 main으로 넘어가는데 화면이 넘어가지 않는 오류가 발생해서... TILspring security프로젝트SpringSpring [TIL][Spring] multipart form 전송시 CSRF 토큰이 null인 경우(Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN') 😅 기존에 만들어 두었던 프로젝트에 spring security를 추가하는 작업 중이기 때문에 순간순간 에러를 맞이 한다.... 다시 한번 과거 나의 이마를 빡빡 때리며,,,,8ㅁ8,,,후,,,괜찮아 할 수 있어... 참고 : 게시글 작성 form의 형태가 multipart 타입이어서인지 글 작성시 Invalid CSRF Token 'null' was found on the request p... TILspring security프로젝트SpringSpring
[Spring&AWS][5-2] 구글 로그인 연동하기 ✅ User 클래스 User 클래스는 사용자 정보를 담당할 도메인이다. domain/user/User.java ✅ Role domain/user/Role.java domain/user/Repository.java 소셜 로그인 등 클라이언트 입장에서 소셜 기능 구현 시 필요한 의존성 OAuth 라이브러리를 이용한 소셜 로그인 설정 코드를 작성해보자. OAuth2 로그인 기능에 대한 여러 설정의... Springspring securityTILOAuth2.0OAuth2.0 [Spring] Spring Security + JWT 로그인 구현 해보기 - 1 (설정, 도메인 생성, 레포 생성) 나는 MySQL 말고 PostgreSQL 사용했다. 다운을 받고 build.gradle을 사용하여 project를 열고 Jackson의 WRITE_DATES_AS_TIMESTAMPS속성은 Java 8 데이터/시간 값을 타임스탬프로 직렬화하는 것을 비활성화하는 데 사용됩니다. 모든 날짜/시간 값은 ISO 날짜/시간 문자열로 직렬화됩니다. 도메인 모델에서 Java 8 데이터/시간 클래스를 사용할... JWTspring securityJWT [Spring Boot] OAuth2 + JWT + React 적용해보리기 오늘 팀원이랑 이야기를 해보다가 우려했던 일이 벌어졌다.. 우려했던 일이란? Jwt 관련 내용은 다음 글에 있습니다. 정보가 너무 많거나 구멍 나있는 부분이 너무나 많았다. 대표적으로 사용되는 서비스로는 Kakao, Google, Facebook, Naver 등이 있다. 대표적으로 3가지 방식이 있다. 프론트 + 백엔드 혼합으로 인증 과정을 수행 React에서는 Next-Auth라는 라이브러... Spring bootJWTspring securityoauth2JWT <Spring Security> Spring Security 주요 아키텍처 이해(1) 스프링 시큐리티는 모든 요청에 대한 인증 및 인가와 같은 보안 처리를 필터 기반으로 처리하고 있는데, 필터에서도 스프링의 기술(스프링 빈)을 사용하고 싶은 요구사항이 있다. 하지만, 서블릿 필터와 스프링 빈 간에 호출하고 사용해야 하는 경우가 생기는 데, 이 때 서블릿 필터는 DelegatingFilterProxy 클래스를 사용해서 스프링 빈에게 요청을 위임하고 그 결과 스프링 빈에서 구현한... DelegatingFilterProxyFilterChainProxySpringspring securitySecurityContextSpring bootauthenticationDelegatingFilterProxy [Spring] Spring Security + JWT 로그인 구현해보기 - 3 (회원가입, 로그인 api 작성) 이제 필요한 모든 보안 구성이 완료되었습니다. 드디어 로그인 및 가입 API를 작성할 시간입니다. 그러나 API를 정의하기 전에 API가 사용할 요청 및 응답 페이로드(DTO)를 정의해야 합니다. 먼저 이러한 페이로드를 정의해보겠습니다. payload혹은 dto 패키지를 생성해주세요 ~ 그안에 작성하겠습니다. 1. 로그인 요청 (Request) 2. 회원 가입 요청 (Request) 응답 R... JWTspring securityJWT <Spring Security> DB 연동 인증 처리 build.gradle는 다음과 같다. Spring Security 5.0 이전에는 기본 PasswordEncoder가 평문을 지원하는 NoOpPasswordEncoder(현재는 Deprecated 됨) 였다. 여러 개의 PasswordEncoder 유형을 선언한 뒤, 상황에 맞게 선택해서 사용할 수 있도록 지원하는 Encoder이다. 암호화 포맷: {id}encodedPassword 기본 ... AuthenticationProviderAccountContextUserDetailsServicespring securityAccountContext 회원 도메인 개발과 JWT 인증/인가 처리 이번 캡스톤디자인 프로젝트에서 만들게 될 플랫폼 서비스는 기본적으로 회원 도메인이 들어가는 서비스이기에 이에 대한 인증/인가 처리를 유연하게 할 수 있도록 Spring Security를 활용하고자 하였다. 또한 Frontend와 Backend가 분리된 구조로 팀 프로젝트를 진행하기 때문에, 다양한 방법 중 JWT Token 인증/인가 방식으로 회원가입/로그인 로직을 구현하였다. Email(I... 캡스톤디자인JWTspring securityJWT Spring Security - 정수원 4일차 요청 시 전달되는 토큰 값과 서버에 저장되는 실제 값과 비교한 후 만약 일치하지 않으면 요청은 실패한다. http.csrf() : 기본 활성화 되어있음 http.csrf().dsabled() : 비활성화 특정한 이름을 가진 스프링 빈을 찾아 그 빈에게 요청을 위임 springSecurityFilterChain 이름으로 생성된 빈을 ApplicationContext에서 찾아 요청을 위임 Del... spring securityspring security Simple BBS 애플리케이션 배포 #4 지난번 SimpleTodoList 애플리케이션을 진행하면서 적용했던 스프링 시큐리티를 이번에는 MVC 기반 애플리케이션인 SimpleBBS에도 적용하는 것이 주 목적이었는데 확실히 까다로운 부분이 많았지만 결과적으로 잘 적용할 수 있었다. 그리고 인증, 인가도 JWT와 이에 저장된 사용자 정보를 이용했기 때문에 스프링 시큐리티의 로그인, 로그아웃 기능을 별로 활용할 수 없었는데 이번 Simp... Spring Frameworkspring securitySpring Framework Spring Security - 정수원 3일차 8. 인증 API - AnonymousAuthenticationFilter 익명사용자 인증 처리 필터 9. 인증 API - 동시 세션 제어 / 세션고정보호 / 세션 정책 이전 사용자 세션을 만료 하는 경우 현재 사용자 인증을 실패하게 하는 경우 인증 API - SessionManagementFilter, ConcurrentSessionFilter SessionManagementFilter 먼... spring securityspring security [Spring Security] Spring Boot를 이용한 customize Form control Names 이번에는 Form Authentication을 customize 하는 방법에 대해 알아본다. 이전에 작성한 기본 Form Authentication은 여기에서 확인 할 수 있다. Form Authentication의 defualt parameter를 customize 해본다. Spring Security의 form authentication의 기본 파라미터는 다음과 같다. • /login •... spring securityspring security Spring Framework-17 🗄 이번엔 인메모리 방식이 아닌 DB에서 유저를 가져와 인증해봅시다! Spring Security에서는 UserDetailService를 이용하여 유저를 조회합니다. 우리는 이를 구현하는 클래스를 만듭니다. 우리의 username은 email이므로 userMapper가 파라미터로 들어온 email로 유저를 조회하여 반환할 수 있도록 만듭니다. UserDetailService가 반환하는 클래스... spring securitySpring FrameworkSpring Framework [TIL][Spring] spring-security 기존 로그인/로그아웃 재커스터마이징하기 😂 기존에 있던 ajax 방식의 로그인을 살려서 해보려고 했는데,,,, 아무래도 시간이 좀 걸릴 것 같아 그냥 security 방식에 따르기로 했다........8ㅁ8 일단 스프링 시큐리티를 접목해서 구현하는데에 의의가 있으니, 작은 것에 연연하지 않기로...! 참고 : 에러 발생 기존에 있던 main 코드 로그인을 하면 link는 main으로 넘어가는데 화면이 넘어가지 않는 오류가 발생해서... TILspring security프로젝트SpringSpring [TIL][Spring] multipart form 전송시 CSRF 토큰이 null인 경우(Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN') 😅 기존에 만들어 두었던 프로젝트에 spring security를 추가하는 작업 중이기 때문에 순간순간 에러를 맞이 한다.... 다시 한번 과거 나의 이마를 빡빡 때리며,,,,8ㅁ8,,,후,,,괜찮아 할 수 있어... 참고 : 게시글 작성 form의 형태가 multipart 타입이어서인지 글 작성시 Invalid CSRF Token 'null' was found on the request p... TILspring security프로젝트SpringSpring